前言
前兩篇介紹了關於 TCP 這個協定是如何進行連線、確保傳輸資料的可靠及有序性、關閉連線流程以及所謂的 SYN 攻擊,那今天就來介紹同樣位於 OSI 模型中傳輸層的另外一個協定-UDP吧!
UDP是什麼?
UDP(User Datagram Protocol,使用者資料包協定),在 RFC 768中被規範,與 TCP 連接導向的特性不同,UDP 是所謂的 transaction oriented(翻譯為:交易導向/事務導向?),傳輸資料前並不需要建立事前的連接步驟,具有以下特性:
- 所謂的事務導向,就是透過 UDP 協定傳輸數據時,每個封包都是獨立的交易,不需要建立端對端的連結,適用於簡單的查詢-回應協議,如:DNS 系統。
- 傳送資料之前不需經過握手建立連線,數據會直接發送出去,不會追蹤數據封包傳送狀態,並不保證封包的送達以及錯誤、遺漏時要求重傳,也因此較少延遲,適用於語音、視訊或線上遊戲等有即時性要求的應用場景。
- 沒有順序性,接收方收到訊息時無從得知前後順序。
UDP & TCP 差別
- 傳輸速率:由於 TCP 在傳輸數據前會先透過三次握手建立連線,而 UDP 並不需要建立連接,直接將數據發送給接收方,因此 UDP 的傳輸速率會較快。
- 可靠性:TCP 可靠性包括偵測封包遺失(透過序號)和錯誤(透過每段校驗和),以及透過重傳進行修正。而 UDP 並未建立可靠連線,於資料發送後也不會追蹤後續狀況,與 TCP 相較起來是不可靠的。
- 順序性:TCP 透過給予每個封包序號,使得接收方在接收到封包後能夠根據序號重組資料。而 UDP 並無設置相關序號,接收方無從得知前後順序。
- headers 大小差異:基本的 TCP header 為 20 bytes(160 位元)。而 UDP 因為是最簡單、無連接的協定,他的 header 固定佔據 8 bytes(64 位元),在傳輸時開銷較小。
小結
今天介紹到了 UDP 協定的相關內容,以及與 TCP 協定這兩個同樣位於 OSI 模型傳輸層的協定之間的差異,那就明天見囉~
參考資料
RFC 768
維基百科